import { createStore, createLogger } from 'vuex'

// 导入 vuex 数据持久化插件
import createPersistedState from 'vuex-persistedstate'

// 导入子模块
import cart from './modules/cart.js'
import user from './modules/user.js'
import cate from './modules/cate.js'

// vue2 -> new Vuex.Store
// vue3 -> createStore()

// 创建 vuex 实例并导出
export default createStore({
  // strict: true, // 开启严格模式
  // 注册子模块
  modules: {
    cart,
    user,
    cate
  },

  // 注册 vuex 数据持久化插件
  plugins: [
    /**
     * 用法:
     * 1. 默认直接调用 createPersistedState() -> 存储的 key: vuex, 存所有的
     * 2. 实际开发需求: 自定义存储的 key 和按需存储?
     * 实现:
     * createPersistedState(
     *   {
     *      key: 'yourkey', // 存储的属性名
     *      paths: [...] // 存储的模块名
     *   }
     * )
     */
    // 数据持久化
    createPersistedState({
      key: 'rabbit-data-t5',
      paths: ['user', 'cart']
    }),

    // 调试数据
    createLogger()
  ]
})
